// Game Application
// (c) jimon game studio

#ifndef JEH_CGAMEAPPLICATION
#define JEH_CGAMEAPPLICATION

#include "IGameApplication.h"
#include "IDevice.h"

#include "jeRenderWindow.h"
#include "ISceneManager.h"

#include "IPerspective_Game.h"
#include "IPerspective_Console.h"

#include "jeEngineController.h"

namespace je
{
	namespace app
	{
		//! Game Application
		class CGameApplication:public je::app::IGameApplication
		{
		private:
			u1 Run;

			device::IDevice * Device;
			video::IRender * Render;
			video::jeRenderWindow * RenderWindow;

			scene::ISceneManager * sm;

			IPerspective_Game * Perspective_Game;
			IPerspective_Console * Perspective_Console;
		public:
			//! Constructor
			CGameApplication();

			//! Destructor
			~CGameApplication();

			//! Tick
			void Tick();

			//! Begin Update
			void BeginUpdate();

			//! End Update
			void EndUpdate();

			//! Begin Render
			void BeginRender();

			//! End Render
			void EndRender();

			//! Set Run
			void SetRun(u1 Mode);

			//! Return true if run
			u1 IsRun();
		};
	}
}

#endif
